Component({
    properties: {
        hasMore: {
            type: Boolean,
            value: !1
        },
        // 加载中的显示文本
        loadingText: {
            type: String,
            value: "加载中..."
        },
        // 加载失败的显示文本
        failText: {
            type: String,
            value: "加载失败, 请点击重试!"
        },
         // 没有更多后的显示文本, 默认没有则隐藏加载更多控件
        finishText: {
            type: String,
            value: ""
        },
        // 列表渲染延时, 默认为 500 ms, 我在开发工具中测试列表渲染速度时快时慢, 可根据实际使用中界面复杂度自行调整
      // ps 如果能监听setData() 渲染结束的话则可以不需要延时 
        listRenderingDelay: {
            type: Number,
            value: 400
        }
    },
 /**
   * 组件的初始数据
   */
    data: {
        showThis: !1,//true显示
        text: "",
        showIcon: !1,//true 显示
        isLoading: !1
    },
    methods: {
        loadMore: function() {
            if (this.properties.hasMore){
              //请求接口
              this.triggerEvent("loadMoreListener")
            }else{
              //不请求
              //console.log("load more finish");
            }
        },
         //加载完成, 传入hasMore 
        loadMoreComplete: function(data) {
          // var hasMore = data.curPage < data.pageCount && data.pageCount != 1
          var hasMore = data
          var text = '',  showIcon = false

          if (hasMore) {
            showIcon = true
            text = this.properties.loadingText
          } else if (this.properties.finishText.length > 0) {
            text = this.properties.finishText
          }
          this.setData({
            hasMore: hasMore,
            text: text,
            showIcon: showIcon,
            showThis: true
          })
          //界面渲染延迟, 避免列表还未渲染完成就再次触发 loadMore 方法
          setTimeout(function () {
            this.loadMore()
          }.bind(this), this.properties.listRenderingDelay)
        },
        // 加载失败
        loadMoreFail: function() {
            this.setData({
                showIcon: !1,
                text: this.properties.failText
            })
            //界面渲染延迟, 避免列表还未渲染完成就再次触发 loadMore 方法
            setTimeout(function() {
                this.setData({
                    isLoading: !1
                });
            }.bind(this), this.properties.listRenderingDelay);
        },
        //点击 loadmore 控件时触发, 只有加载失败时才会进入页面回调方法
        clickLoadMore: function() {
          if (this.data.text != this.properties.failText) return
          this.setData({
            showIcon: true,
            text: this.properties.loadingText,
            isLoading: true
          })
          this.triggerEvent('clickLoadMore')
        }
    }
});